/*
//
//              INTEL CORPORATION PROPRIETARY INFORMATION
//  This software is supplied under the terms of a license  agreement or
//  nondisclosure agreement with Intel Corporation and may not be copied
//  or disclosed except in  accordance  with the terms of that agreement.
//    Copyright (c) 2007 Intel Corporation. All Rights Reserved.
//
//
*/

#ifndef __UMC_AVS_DEC_TABLES_H
#define __UMC_AVS_DEC_TABLES_H

#include "umc_avs_mb_info.h"

namespace UMC
{

// declare const tables to look up types
struct AVS_MB_TYPE
{
    eAVSMbType MbType;                                          // (eAVSMbType) type of a macroblock
    eAVSDivBlockType divType;                                   // (eAVSDivBlockType) block division type
    Ipp32u MvNum;                                               // (Ipp32u) number of parts of a macroblock
};

struct AVS_B_MB_TYPE
{
    eAVSMbType MbType;                                          // (eAVSMbType) type of a macroblock
    eAVSDivBlockType divType;                                   // (eAVSDivBlockType) block division type
    Ipp32u MvNum;                                               // (Ipp32u) number of parts of a macroblock
    Ipp8u predType[4];                                          // (Ipp8u []) block prediction types
};

extern const
AVS_MB_TYPE TypesOfPMacroblocks[6];
extern const
AVS_B_MB_TYPE TypesOfBMacroblocks[25];

// declare const table to look up the CBP
extern const
Ipp32u CBPOfMacroblock[AVS_CODING_TYPES][64];

extern const
Ipp32u AVSChromaQPTable[64];

} // namespace UMC

#endif // __UMC_AVS_DEC_TABLES_H
